package com.huilian.iotbox.data.vo;

import com.huilian.iotbox.data.dto.QueryParam;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;


/**
 * 消费记录
 * @since 2021-01-13 17:13:30
 */
@Data
public class ConsumeRecordVo extends QueryParam implements Serializable {
    private static final long serialVersionUID = 8401763202624471668L;
    private Integer id;
    /**
     * 用户会员id
     */
    private Long memberId;

    private Integer userId;
    /**
     * 场地id
     */
    private Integer merchantStoreId;
    private Integer flagIndex;
    /**
     * 关联order表outTradeNo
     */
    private String outTradeNo;
    /**
     * 支付订单表id
     */
    private Long orderId;
    /**
     * 活动订单id
     */
    private Long activityOrderId;
    /**
     * 兑换订单id
     */
    private Integer orderExchangeId;
    /**
     * 设备号
     */
    private String deviceNo;
    /**
     * 支付唯一码
     */
    private String payNo;
    /**
     * 投币时的设备类型id
     */
    private Integer deviceTypeId;
    /**
     * 当次消费总币数
     */
    private Integer consume;
    /**
     * 扣除充值
     */
    private Integer deductRecharge;
    /**
     * 扣除赠送
     */
    private Integer deductDonate;
    /**
     * 扣除充值币前余额
     */
    private Integer rechargeBeforeBalance;
    /**
     * 扣除赠币前余额
     */
    private Integer donateBeforeBalance;
    /**
     * 扣除充值币后余额
     */
    private Integer rechargeAfterBalance;
    /**
     * 扣除赠币后余额
     */
    private Integer donateAfterBalance;
    /**
     * 投币方式：1、串口，2、脉冲
     */
    private Integer insertCoinType;
    /**
     * 1、线下投币 2、线上投币
     */
    private Integer coinType;


    /**
     * 余额变化总数，元
     */
    private BigDecimal changeTotal;
    /**
     * 人民币充值金额，元
     */
    private BigDecimal moneyRechargeBalance;
    /**
     * 人民币赠送金额，元
     */
    private BigDecimal moneyDonateBalance;
    /**
     * 人民币充值金额变化前，元
     */
    private BigDecimal beforeMoneyRechargeBalance;
    /**
     * 人民币赠送金额变化前，元
     */
    private BigDecimal beforeMoneyDonateBalance;
    /**
     * 人民币充值金额变化后，元
     */
    private BigDecimal afterMoneyRechargeBalance;
    /**
     * 人民币赠送金额变化后，元
     */
    private BigDecimal afterMoneyDonateBalance;
    /**
     * 充电端口
     */
    private Integer positionId;
    /**
     * 预计充电时长，分钟
     */
    private Integer estimatedChargingTime;
    /**
     * 剩余充电时长，分钟
     */
    private Integer remainingChargeTime;
    /**
     * 预计充电度数，度
     */
    private BigDecimal estimatedChargingPower;
    /**
     * 剩余充电度数，度
     */
    private BigDecimal remainingChargePower;
    /**
     * 充电功率，瓦（W）
     */
    private Integer chargePower;
    /**
     * 当次充电剩余余额，元
     */
    private BigDecimal remainingChargeBalance;
    /**
     * 开始充电时间
     */
    private Date startChargingTime;
    /**
     * 结束充电时间
     */
    private Date endChargingTime;
    /**
     * 结束充电类型：0、购买的充电时或者电量用完了，1、用户手动停止（拔插头，或是按了停止按钮），2、充电满了，自动停止，3、超功率自停，4、远程断电，11、设备或是端口出现问题，被迫停
     */
    private Integer endOfChargeType;
    /**
     * 消费类型id
     */
    private Integer consumeRecordTypeId;
    /**
     * 支付盒子投币状态 和 支付订单状态
     * 0:投币异常，超时返回
     * 1:确认（投币成功），
     * 2:正在投币，
     * 3:投币失败，支付盒子返回状态是投币失败
     */
    private Integer status;
    /**
     * 是否已退币，null/0——>否，1——>已退
     */
    private Boolean coinReturn;
    /**
     * 失败原因
     */
    private String failReason;
    /**
     * 备注
     */
    private String remark;
    /**场地名称*/
    private String storeName;
    /**微信昵称*/
    private String nickName;

    /** 机器别名*/
    private String alias;

    /**交易成功的总币*/
    private Integer successCoin;
    /**交易成功的线下投币*/
    private Integer successFactCoin;
    /**交易成功的线上投币*/
    private Integer successVirtualCoin;

    /**交易异常的总币*/
    private Integer anomalyCoin;
    /**交易异常的线下投币*/
    private Integer anomalyFactCoin;
    /**交易异常的线上投币*/
    private Integer anomalyVirtualCoin;

    /**
     * 消费类型名称
     */
    private String consumeRecordTypeName;

    private Integer channelType;

    /**
     * 支付宝userId
     */
    private String zfbUserId;
    private String username;

    private String name;

    private String agencyName;

    private String agencyNo;

    /**
     * 线上投币失败重试总次数
     */
    private Integer onLineInsertCoinFailRetrySum;

    private String deviceTypeName;

    /**
     * 支付订单号
     */
    private String orderOutTradeNo;

    private Integer deviceAlias;

    /**
     * 消费次数（启动次数）
     */
    private Integer consumeCount;

    private Integer consumeTotal;

    private Integer deviceId;

    private String strCoinType;
    private Integer onLineCoinCount;
    private Integer offLineCoinCount;
    /**
     * 设备备注名称，方便记忆
     */
    private String remarkName;
    /**
     * 状态格式化后名称
     */
    private String stateFormatName;
    /**
     * 已充电时长，秒
     */
    private Long chargeUpTime;
    /**
     * 剩余充电时长，秒
     */
    private Integer remainingChargeTimeSeconds;

    private String mqttMessageBusinessId;

    /**
     * 0、出币 1、投币
     */
    private Integer currentStatus;

    /**
     * 头像
     */
    private String headImgUrl;


    /**
     * 子单，由母单分裂出多条子单，根据parentConsumeRecordId找到母单
     */
    private Integer parentConsumeRecordId;

    private Long memberStoreBalanceId;
    /**
     *出币总数——>微信秒杀核销
     * */
    private Integer weiXinSeckillOutCoinTotal;
    /**
     *出币总数——>微信拼团核销
     * */
    private Integer weiXinGroupBuyingOutCoinTotal;
    /**
     *出币总数——>微信卡劵核销
     * */
    private Integer weiXinVoucherOutCoinTotal;
    /**
     *出币总数——>人工出币
     * */
    private Integer artificialOutCoinTotal;

    /**
     * 用户性别
     * */
    private String sex;

    /**
     *1微信 2支付宝 3抖音
     * */
    private Integer type;
    /**
     * 层级，如第一层、第二层
     */
    private Integer hierarchy;
    /**
     * 货道，如货道1、货道2
     */
    private Integer freightLane;

    private Integer freightType;

    private Integer activityId;

    private Date orderCreateTime;
    /**
     * 售币数（游戏币销售数量）
     * */
    private Integer quantityOfCoinsSold;
    /** 操作商户ID，User表的ID */
    private Integer operationUserId;
    private String nickUserName;
    private String userName;

    private String payStatus;
    private String operationName;
    private String memberRemarkName;

    private BigDecimal turnover;

    private Integer onLinePayOutCoinTotal;
    private Integer offLinePayOutCoinTotal;
    private Integer douYinOutCoinTotal;
    private Integer meiTuanOutCoinTotal;

    private String operationUserName;
    private String operationNickName;
}
